home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection Student Program / ADC Tools Sampler CD Disk 3 1999.iso / Cool Demos, SDKs, & Tools / Demos⁄Tools⁄Offers / Eiffel for CW beta 3 / EiffelS2 / LIBRARY / MOTEL / Events.c < prev    next >
Text File  |  1999-05-28  |  4KB  |  134 lines

  1. /*------------------------------------------------------------------*/
  2. /* Eiffel/S II MacOS Runtime                                         */
  3. /*------------------------------------------------------------------*/
  4. /* Author    : Ian Joyner                                               */
  5. /* Release   : 1.0                                                  */
  6. /* Date      : Dec. 1997                                            */
  7. /* Copyright : Ian Joyner                                            */
  8. /*------------------------------------------------------------------*/
  9. /********************************************************************/
  10. /*                                                                    */
  11. /*                                EVENTs                                */
  12. /*                                                                    */
  13. /********************************************************************/
  14.  
  15. #include <Events.h>
  16. #include <ToolUtils.h>
  17. #include <Eiffel2.h>
  18.  
  19. BOOLEAN platform_wait_next_event (INTEGER mask, EventRecord *e, INTEGER *code, INTEGER *message, INTEGER *when,
  20.                                INTEGER *modifiers, INTEGER *x, INTEGER *y, CHARACTER *key_code, CHARACTER *character_code,
  21.                                INTEGER *os_code, INTEGER *resume_event, INTEGER *convert_scrap,
  22.                                INTEGER sleep, RgnHandle cursor_region)
  23. {
  24.     BOOLEAN b;
  25.     
  26.     b = WaitNextEvent (mask, e, sleep, cursor_region);
  27.     
  28.     *code = e->what;
  29.     *message = e->message;
  30.     *when = e->when;
  31.     *modifiers = e->modifiers;
  32.     *x = e->where.h;
  33.     *y = e->where.v;
  34.     *key_code = (CHARACTER)((e->message >> 8) & 0x00FF);
  35.     *character_code = (CHARACTER)(e->message & 0x00FF);
  36.     *os_code = (CHARACTER)((e->message >> 24) & 0x00FF);
  37.     
  38.     if ((CHARACTER)((e->message >> 24) & 0x00FF) == suspendResumeMessage)
  39.     {
  40.         *resume_event = (CHARACTER)(e->message & 0x0001);
  41.         *convert_scrap = ((CHARACTER)(e->message & 0x0002) != 0)? 1 : 0;
  42.     }
  43.                 
  44.     return b;
  45. }
  46.  
  47. int platform_event_record_size ()
  48. {
  49.     EventRecord e;
  50.     
  51.     return (sizeof (e));
  52. }
  53.  
  54. void platform_system_click (EventRecord *e, WindowPtr w)
  55. {
  56.     SystemClick (e, w);
  57. }
  58.  
  59. INTEGER platform_menu_select (EventRecord *e)
  60. {
  61.     return MenuSelect (e->where);
  62. }
  63.  
  64. INTEGER platform_menu_key (EventRecord *e)
  65. {
  66.     return MenuKey ((char)(e->message & charCodeMask));
  67. }
  68.  
  69. INTEGER platform_find_window (EventRecord *e, WindowPtr *w)
  70. {
  71.     /*  -- NOTE: I did use the Window records refCon field to
  72.         -- store the Eiffel WINDOW reference. However, this
  73.         -- did not work when window was associated with the
  74.         -- application, like a debug window, but not actually
  75.         -- created by the application. */
  76.         
  77.     return FindWindow (e->where, w);
  78. }
  79.  
  80. BOOLEAN platform_event_active (EventRecord *e)
  81. {
  82.     return ((e->modifiers & activeFlag) != 0);
  83. }
  84.  
  85. BOOLEAN platform_event_button (EventRecord *e)
  86. {
  87.     return ((e->modifiers & btnState) != 0);
  88. }
  89.  
  90. BOOLEAN platform_event_command (EventRecord *e)
  91. {
  92.     return ((e->modifiers & cmdKey) != 0);
  93. }
  94.  
  95. BOOLEAN platform_event_shift (EventRecord *e)
  96. {
  97.     return ((e->modifiers & shiftKey) != 0);
  98. }
  99.  
  100. BOOLEAN platform_event_alpha (EventRecord *e)
  101. {
  102.     return ((e->modifiers & alphaLock) != 0);
  103. }
  104.  
  105. BOOLEAN platform_event_option (EventRecord *e)
  106. {
  107.     return ((e->modifiers & optionKey) != 0);
  108. }
  109.  
  110. BOOLEAN platform_event_control (EventRecord *e)
  111. {
  112.     return ((e->modifiers & controlKey) != 0);
  113. }
  114.  
  115. BOOLEAN platform_event_right_shift_key (EventRecord *e)
  116. {
  117.     return ((e->modifiers & rightShiftKey) != 0);
  118. }
  119.  
  120. BOOLEAN platform_event_right_option_key (EventRecord *e)
  121. {
  122.     return ((e->modifiers & rightOptionKey) != 0);
  123. }
  124.  
  125. BOOLEAN platform_event_right_control_key (EventRecord *e)
  126. {
  127.     return ((e->modifiers & rightControlKey) != 0);
  128. }
  129.  
  130. WindowPtr platform_event_window (INTEGER message)
  131. {
  132.     return (WindowPtr) message;
  133. }
  134.